1. Field of the Invention
The present invention relates generally to computer-implemented display systems, and more particularly to a system and method of rendering translucent and complex-shaped overlapping layers in a display system.
2. Description of Background Art
Many existing display systems are capable of compositing two or more display elements to generate a final image. In such systems, display elements often include overlapping layers, such as for example in a windowing system for a graphical user interface wherein on-screen elements, such as windows, may be moved around and placed on top of one another.
Rendering and displaying an image having two or more overlapping layers presents certain problems, particularly in determining how to render that portion of the image where the layers overlap. When the overlapping layers are opaque, the graphics system need only determine which layer is on “top”, and display the relevant portion of that layer in the final image; portions of underlying layers that are obscured may be ignored. However, when overlapping layers are translucent, more complex processing may be called for, as some interaction among picture elements (pixels) in each overlapping layer may take place. Accordingly, some calculation may be required to overlay the image elements in order to derive a final image.
Compositing techniques for performing these calculations are known in the art. See, for example, T. Porter et al., in “Compositing Digital Images”, in Proceedings of SIGGRAPH '84, 1984, pp. 253-59. Generally, however, such techniques are directed toward compositing only two layers at a time. When more than two layers are to be composited, a number of separate operations must be performed in order to generate the final image. This is generally accomplished by compositing image elements in a bottom-up approach, successively combining each new layer with the results of the compositing operations performed for the layers below.
This step-by-step compositing approach has several disadvantages. If the image is constructed in the frame buffer, on-screen flicker may result as the system writes to the frame buffer several times in succession. Alternatively, the image may be constructed in an off-screen buffer, thus avoiding on-screen flicker; however, such a technique requires additional memory to be allocated for the buffer, and also requires additional memory reads and writes as the final image is transferred to the frame buffer.
In addition, step-by-step generation of the final image may result in poor performance due to the large number of arithmetic operations that must be performed. Writing date to a frame buffer is particularly slow on many computers; therefore, conventional systems which write several layers to the frame buffer in succession face a particularly severe performance penalty.
Finally, such a technique often results in unnecessary generation of some portions of image elements that may later be obscured by other image elements.
Conventionally, arbitrarily shaped windows and layers are accomplished by dividing a window into rectangular areas and/or blocking out some portions of a rectangle to make a rectangular layer appear to be arbitrarily shaped. Such techniques often result in additional processing time for areas of the windows that may have no effect on the final image.
What is needed is a system and method for rendering translucent layers, which avoids the above-referenced deficiencies and allows compositing of multiple layers without causing screen flicker and without requiring additional off-screen buffers. What is further needed is a rendering system and method that improves the performance of prior art systems when generating images having multiple overlapping translucent layers. What is further needed is a rendering system and method that avoids unnecessary generation of image element portions that will be obscured by other image elements in the final image.